import Vue from 'vue'
import Vuex from 'vuex'

// 1. 导入存储vuex中数的包
import creatState from 'vuex-persistedstate'
import { getUserAPI } from '@/api/user.js'

Vue.use(Vuex)

// 当前项目业务比较简单，不需要拆模块
export default new Vuex.Store({
  // 2. 配置vuex插件
  // 调用的是creatState函数的返回值
  plugins: [creatState()],
  state: {
    // 1.登录成功之后，要把token存储到这里
    token: '',
    user: {}
  },
  mutations: {
    // 2.定义修改token值的mutation函数
    updateToken(state, token) {
      // 传进来的token赋值给vuex的state里的token
      state.token = token
    },
    // 更新用户信息的mutation
    updateUser(state, obj) {
      state.user = obj
    }
  },
  actions: {
    // 在vue中任何一个函数如果不调用就不会自动执行（声明周期函数除外）
    // 发起请求，获取用户的基本信息
    async initUser(ctx) {
      // 如果请求成功，则调用相应的 mutation 函数，把用户信息存储到state中
      const { data: res } = await getUserAPI()
      if (res.code === 0) {
        // 获取数据成功
        ctx.commit('updateUser', res.data)
      }
    }
  },
  modules: {
  }
})
